import {
  dragElement,
  sendTextToClipboard,
  hideEmptyElement,
  removeEndChar
} from "./func.js";

let tocContainer: HTMLElement | null = document.querySelector('.toc');
if (tocContainer) {
  // TOC容器无内容隐藏
  let tocNav = tocContainer.querySelector('nav');
  hideEmptyElement(tocNav, tocContainer);
  // TOC容器拖拽
  dragElement(tocContainer, tocContainer);
}

// 一键复制代码块内容
document.querySelectorAll('.highlight table tr').forEach((tr) => {
  // 获取代码块元素
  let codeElement = tr.querySelector('td:not(:first-of-type)');
  if (!codeElement) return;

  // 遍历每一个代码块td，在右上角插入复制按钮
  let copyButton = document.createElement('button');
  copyButton.className = 'copy_code';
  copyButton.innerText = '复制';
  copyButton.style.visibility = 'visible';
  // 将button插入为td的同级元素
  codeElement.after(copyButton);

  // 获取对应的代码块文本(提前获取，防止codeElement变为null)
  let codeText = codeElement.textContent?.trim() || '';

  // 为复制按钮添加点击事件监听器
  copyButton.addEventListener('click', async () => {
    try {
      // 发送代码块文本到剪贴板
      await sendTextToClipboard(codeText);
      // console.log('代码已复制到剪贴板');

      // 提供一个视觉反馈
      copyButton.innerText = '✓';
      copyButton.style.color = '#4caf50';
      setTimeout(() => {
        copyButton.innerText = '复制';
        copyButton.style.color = '';
      }, 1000);
    } catch (err) {
      console.error('无法复制代码：', err);
      
      // 提供一个视觉反馈
      copyButton.innerText = 'x';
      copyButton.style.color = '#f44336';
      setTimeout(() => {
        copyButton.innerText = '复制';
        copyButton.style.color = '';
      }, 1000);
    }
  });
});
// 行内代码复制按钮
document.querySelectorAll('p').forEach((inlineCode) => {
  // 获取行内元素
  let codeElements = inlineCode.querySelectorAll(':scope > code');
  if (codeElements.length > 0) {
    codeElements.forEach(codeElement => {
      if (!codeElement) return;
      
      // 遍历每一个行内代码元素，在右侧插入复制按钮
      let copyButton = document.createElement('button');
      copyButton.className = 'copy_code';
      copyButton.innerText = '📋';
      // 将button插入为code的子元素
      codeElement.appendChild(copyButton);
      
      // 鼠标划过行内代码元素时显示复制按钮
      codeElement.addEventListener('mouseenter', async () => {
        copyButton.style.visibility = 'visible';
      })
      codeElement.addEventListener('mouseleave', async () => {
        copyButton.style.visibility = '';
      })
      
      // 获取对应的行内代码文本(提前获取，防止codeElement变为null)，并对文本进行预处理
      let codeText = removeEndChar(codeElement.textContent?.trim() || '', '📋');

      // 为复制按钮添加点击事件监听器
      copyButton.addEventListener('click', async () => {
        try {
          // 发送代码块文本到剪贴板
          await sendTextToClipboard(codeText);
          // console.log('代码已复制到剪贴板');
      
          // 提供一个视觉反馈
          copyButton.innerText = '✓';
          copyButton.style.color = '#4caf50';
          copyButton.style.opacity = '1';
          setTimeout(() => {
            copyButton.innerText = '📋';
            copyButton.style.color = '';
            copyButton.style.opacity = '0.7';
          }, 1000);
        } catch (err) {
          console.error('无法复制代码：', err);
          
          // 提供一个视觉反馈
          copyButton.innerText = 'x';
          copyButton.style.color = '#f44336';
          copyButton.style.opacity = '1';
          setTimeout(() => {
            copyButton.innerText = '📋';
            copyButton.style.color = '';
            copyButton.style.opacity = '0.7';
          }, 1000);
        }
      });
    })
  } else {
    return
  }
});